using Sandia.MVCFramework.Common;
using Sandia.MVCFramework.Data;
using Sandia.MVCFramework.Request;
using System;
using System.Collections.Generic;
using System.Text;
using Sandia.MVCFramework.Plugin;

namespace Sandia.MVCFramework.ViewManager
{
    /// <summary>
    /// The IViewManager interface defines the general functionality for a view
    /// manager, which controls the display and mainLayout of IViews.
    /// </summary>
    public interface IViewManager
        : IRequestRouter, IPublisher, ISubscriber, IStartable, IPluginComponent
    {
        /// <summary>
        /// Sets the current state of the view manager.
        /// </summary>
        /// <param name="viewState">The new state.</param>
        void SetViewManagerState(
            IViewManagerState viewState);

        /// <summary>
        /// Gets the current state of the view manager.
        /// </summary>
        /// <returns>The current state.</returns>
        IViewManagerState GetViewManagerState();
    }
}
